perm filename NIVAT.PPL[VLI,LSP] blob sn#382038 filedate 1978-09-08 generic text, type T, neo UTF8
(TML)

"X:*";;
"Y:*";;
"H:*->*";;
"F:*->(*->*)";;
"G:*->(*->*)";;
"PHI:*->*";;
"PSI:*->*";;


let funPHI = "(\PHI X. F X (PHI (H X)))";;
let funPSI = "(\PSI X. G X (PSI (H X)))";;
let funTET = "(\TET X. F X (G (H X) (TET (H (H X)))))";;


let th1 = ASSUME "PHI == FIX ↑funPHI";;
let th2 = ASSUME "PSI == FIX ↑funPSI";;
let th3 = ASSUME "TET == FIX ↑funTET";;




let ss1 = BASICSS;;

let goal1 = "!X. PHI X == F X (G (H X) (PHI (H (H X))))",
            ss1,[]:form list;;

let eqPHIPSI = ASSUME "PHI == PSI";;

let TAC1 = UNWINDOCCSTAC[1] th1 THEN SIMPTAC
           THEN SUBSOCCSTAC[([1],eqPHIPSI)] THEN
           UNWINDTAC th2 THEN SIMPTAC THEN
           SUBSTAC[eqPHIPSI] THEN SIMPTAC;;



let th4 = ASSUME "PHI == FIX(\PHI' X.F X(G (H X)(PHI'(H(H X)))))";;


let goal3 = "PHI == FIX(\PHI' X. F X(G (H X)(PHI'(H(H X)))))",
            ss1,[]:form list;;


let goal2 = "FIX(\PHI' X. F X(G(H X)(PHI'(H(H X))))) << PHI"
            ,ss1,[]:form list;;


let goal4 = "TET << PHI",ss1,[]:form list;;

let TAC4 = WEAKFIXTAC th3 THEN SIMPTAC THEN APPLYTAC2
           THEN SIMPTAC THEN UNWINDOCCSTAC[2] th1 THEN SIMPTAC
           THEN SUBSTAC [eqPHIPSI] THEN UNWINDOCCSTAC[2] th2
           THEN SIMPTAC;;


let th33 = ASSUME "TET3 == FIX(\TET3. (↑funPHI (↑funPSI TET3)))";;

let goal33 = "TET == TET3",ss1,[]:form list;;

let TAC33 = INDUCTAC[th3;th33] THEN SIMPTAC THEN GREUTAC THEN SIMPTAC;;